package com.wildeman.tokati.core;

import java.util.Random;

/**
 * Clase que representa la selección de un miembro de un grupo o lista
 * @author wildeman
 *
 */
public class Selector 
{
	//Métodos de selección
	public static final int SELECCION_ALEATORIA = 0;
	public static final int SELECCION_SECUENCIAL = 1;
	
	
	
	
	/**
	 * Selecciona un miembro de un grupo utilizando segun el método de selección indicado
	 * @param grupo
	 * @param metodoSeleccion
	 * @return
	 * @throws Exception
	 */
	public Miembro seleccionaMiembro(Grupo grupo, int metodoSeleccion) throws Exception
	{
		
		switch (metodoSeleccion)
		{
		  case SELECCION_ALEATORIA: 
			  return seleccionAleatoria(grupo);
			
		  case SELECCION_SECUENCIAL:
			  return null;
			
		  default: 
			  throw new Exception("Método de selección inválido");
		}

	}
	
	
	/**
	 * Devuelve un miembro del grupo de forma aleatoria
	 * @param grupo
	 * @return
	 * @throws Exception En caso que no se pueda selecciona el integrante
	 */
	private Miembro seleccionAleatoria(Grupo grupo) throws Exception
	{
		int tamanoGrupo = 0, numAleatorio = 0;
		Random	randomGenerator = new Random();

		if (grupo != null)
		{
			tamanoGrupo = grupo.getIntegrantes().size();
			numAleatorio = randomGenerator.nextInt(tamanoGrupo);
			
			return grupo.getIntegrantes().get(numAleatorio);
		}
		else
		{
			throw new Exception("El grupo está vacío");
		}
		
	}
	
	
	
	
}
